1. Related Applications
This application is related to U.S. patent application Ser. No. 08/206,091, entitled, "Method and Apparatus for Transmitting Information on a Wired-OR Bus", filed Mar. 1, 1994, which is incorporated by reference herein (Attorney Docket No. 42390.P2146).
2. Field of the Invention
The invention generally relates to computer systems and in particular relates to pipelined bus systems for use in interconnecting devices within a computer system.
3. Description of Related Art
Many state of the art bus systems are pipelined to allow for multiple bus transactions to be processed concurrently. For example, bus arbitration may be performed for one transaction while data transfer is performed concurrently for a separate bus transaction. In this manner, although only a single phase of a single bus transaction can be processed at any given clock cycle, multiple transactions can nevertheless be processed in parallel with different phases of the separate bus transactions performed concurrently.
A problem can occur with pipelined busses if each of the devices or agents, connected to the bus is not capable of accommodating the maximum depth of the bus pipeline. For example, if one particular agent is only capable of accommodating a pipeline having a depth of two, then the overall bus system may not function properly if other agents are attempting to pipeline transactions up to a greater pipeline depth. The effective maximum depth for a bus pipeline is constrained by the agent which can accommodate only the shallowest bus pipeline depth. The bus depth to which any particular agent is capable of accommodating may depend on the particular hardware of the bus agent or it may depend upon the current state of the bus agent. For example, during start-up or initialization of an agent, the agent may not be capable of processing any bus transactions, whereas once the agent has been fully activated, the agent may be capable of accommodating a bus pipeline depth of five. In other cases, the maximum depth to which an agent can process bus request is a dynamic function of the current state of input and output queues connected to the bus. For example, if the input queue of a bus agent is empty, the agent may be capable of accommodating a pipeline depth of five. However, if the queue of the bus agent is full or nearly full, the agent may only be capable of accommodating a bus pipeline depth of one or two.
It would be desirable to provide a bus mechanism to allow the overall depth of the bus pipeline to be dynamically varied in accordance with any particular constraints of the agents connected to the bus. One proposed solution is to provide a central arbiter which controls the depth of the pipeline. In such a system, each individual bus agent transmits a signal to the central arbiter that specifies the maximum pipeline depth that the agent can accommodate. The arbiter then controls the depth of the pipeline in accordance with the signals received from each of the various bus agents. Although such a system is feasible, it is not necessarily an ideal system since the need for each agent to transmit signals to a central arbiter renders the responsiveness to changing pipeline depth requirements somewhat sluggish and may result in circumstances where multiple bus transactions are issued before the central arbiter has a chance to recognize and respond to a pipeline depth reduction request received from one of the agents. Such may necessitate re-transmission of bus transactions, resulting in overall bus inefficiency or, under certain circumstances, could result in the loss of data. In any case, it would be desirable to provide a more effective method for dynamically controlling the depth of the bus pipeline.